package com.yxinsur.imc.business.service;

import java.util.Date;
import java.util.List;

import com.baomidou.mybatisplus.extension.service.IService;
import com.yxinsur.imc.business.domain.ImcComm;
import com.yxinsur.imc.business.form.CommForm;
import com.yxinsur.imc.business.form.ExamCommForm;
import com.yxinsur.imc.business.vo.CommVo;

/**
 * 佣金报主Service接口
 *
 * @author imc
 * @date 2021-05-25
 */
public interface IImcCommService extends IService<ImcComm> {
    /**
     * 查询佣金报主
     *
     * @param id 佣金报主ID
     * @return 佣金报主
     */
    public ImcComm selectImcCommById(Long id);

    /**
     * 新增佣金报主
     *
     * @param imcComm 佣金报主
     * @return 结果
     */
    public int insertImcComm(ImcComm imcComm);

    /**
     * 查询佣金报主列表
     *
     * @param commForm 佣金报主
     * @return 佣金报主集合
     */
    public List<CommVo> selectImcCommList(CommForm commForm);

    /**
     * 修改佣金报主
     *
     * @param imcComm 佣金报主
     * @return 结果
     */
    public int updateImcComm(ImcComm imcComm);

    /**
     * 批量删除佣金报主
     *
     * @param ids 需要删除的佣金报主ID
     * @return 结果
     */
    public int deleteImcCommByIds(String[] ids);

    /**
     * 删除佣金报主信息
     *
     * @param id 佣金报主ID
     * @return 结果
     */
    public int deleteImcCommById(Long id);

    /**
     * 险种明细计算
     * @param orgId
     * @param calculateDate
     */
    void calculate(Long orgId, Date calculateDate,Long fundId);

    /**
     * 提交审核
     * @param commId
     */
    void examComm(Long[] commId);

    /**
     * 审核通过
     * @param examCommForm
     */
    void examPassComm(ExamCommForm examCommForm);

    /**
     * 反结审核
     * @param examCommForm
     */
    void examCancelComm(ExamCommForm examCommForm);

    /**
     * 退回审核
     * @param examCommForm
     */
    void returnComm(ExamCommForm examCommForm);

    ImcComm calculateDetail(Long commId, Long orgId);

    /**
     *
     * @param imcComm
     */
    List<Long> asnyCalculateDetail(ImcComm imcComm);

    void calculateBasic(Long commId, List<Long> brokerIds, String settleMonth);
}
